// 获取常用时间
import dayjs from 'dayjs';

export const LAST_7_DAYS = [
  dayjs().subtract(7, 'day').format('YYYY-MM-DD'),
  dayjs().subtract(1, 'day').format('YYYY-MM-DD'),
];

export const LAST_30_DAYS = [
  dayjs().subtract(30, 'day').format('YYYY-MM-DD'),
  dayjs().subtract(1, 'day').format('YYYY-MM-DD'),
];

/**
 * 将时间戳格式化为相对时间或日期
 * @param timestamp 时间戳（秒单位）
 * @returns 格式化后的时间字符串
 */
export function formatTime(timestamp: number): string {
  // 1. 处理无效输入
  if (typeof timestamp !== 'number' || timestamp <= 0) {
    return '无效时间';
  }

  // 2. 转换为毫秒并创建日期对象
  const date = new Date(timestamp * 1000);
  const now = new Date();
  const diffInSeconds = Math.floor((now.getTime() - date.getTime()) / 1000);

  // 3. 处理未来时间
  if (diffInSeconds < 0) {
    return '刚刚';
  }

  // 4. 计算时间差单位
  const minutes = Math.floor(diffInSeconds / 60);
  const hours = Math.floor(minutes / 60);
  const days = Math.floor(hours / 24);

  // 5. 根据差值返回对应格式
  if (diffInSeconds < 60) {
    return '刚刚';
  } else if (minutes < 60) {
    return `${minutes}分钟前`;
  } else if (hours < 24) {
    return `${hours}小时前`;
  } else {
    // 显示日期（YYYY-MM-DD）
    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, '0');
    const day = String(date.getDate()).padStart(2, '0');
    return `${year}-${month}-${day}`;
  }
}
